package helperx

import (
	"context"
	"net/url"
	"strconv"

	"github.com/google/uuid"
)

// MakeRequestId 生成RequestId
func MakeRequestId() string {
	return uuid.New().String()
}

// MakeCtxWithRequestId 获取一个全新的RequestId
// 主要用于追踪一些非API请求的功能，如：定时任务
func MakeCtxWithRequestId() context.Context {
	return context.WithValue(context.Background(), "RequestId", MakeRequestId())
}

// StrIsNumeric 字符串是否是数字
func StrIsNumeric(s string) bool {
	_, err := strconv.ParseInt(s, 10, 64)
	return err == nil
}

// IsUrl 检测是否为一个正常的URL
// 必须有Scheme和host
// 如http://www.example.com将返回true
// www.example.com将放回false
func IsUrl(s string) bool {
	_, err := url.ParseRequestURI(s)
	if err != nil {
		return false
	}

	u, err := url.Parse(s)
	if err != nil || u.Scheme == "" || u.Host == "" {
		return false
	}

	return true
}

// PhoneMask 将手机号打上掩码
func PhoneMask(phone string) string {
	if len(phone) != 11 {
		return ""
	}

	return phone[:3] + "****" + phone[7:]
}
